1. Field of the Invention
The present invention relates to a system, method, and program for increasing capacity of an array of storage units, such as disk drives, in a storage device.
2. Description of the Related Art
A storage controller system manages the input/output (I/O) requests from numerous host systems to a large storage space, such as a Direct Access Storage Device (DASD) comprised of numerous interconnected hard disk drives. The host systems view the storage space as a series of logical unit numbers (LUNs). For instance, with the Small Computer System Interface (SCSI), the host device driver would include the LUN number with the I/O request to access a logical block address (LBA) within the LUN. The storage controller maintains a mapping of LUNs to actual physical disks in the DASD. In this way, the storage controller maps the requested LBA in a LUN to a particular sector in a disk.
In prior art systems, a plurality of interconnected disks, such as a DASD, form an array of storage blocks or sectors. The sectors in the disk form an array having multiple rows and columns of sectors, where each sector can be identified as located within a column and row in the array. Data is striped across the disks. In a RAID (Redundant Array of Independent Disks) 5 configuration, each stripe includes parity data for all the data sectors in the stripe.
In prior art RAID arrays, to add a disk to increase the storage space of the array, the data currently in the array is copied to a backup location, the disks are added to the array, and the entire array is then reconfigured. The data at the backup location is then copied back to the array, with any logical unit numbers (LUNs) in the data reconfigured on the new expanded array.
The prior art procedure for expanding the size of an array is time consuming, because the current data in the array must be moved to a backup location before expanding the size of the array, and then copied back to the expanded array. Not only is this time consuming, but access to the data in the array is unavailable while the expanded array is being configured and the data is being copied back to the array.
Thus, there is a need in the art for an improved technique for expanding the storage size of the array.
To overcome the limitations in the prior art described above, preferred embodiments disclose a method, system, and program for expanding storage space in an array of storage units. The storage space formed by the storage units is configured as logical units to store data. Storage units are added to the array to form an expanded storage space. The storage units in the array prior to the addition of the storage units are in a pre-expansion storage space. At least one additional logical unit is configured in the expanded storage space such that the logical units existing prior to the addition of the storage units in the pre-expansion storage space are not affected by the logical units configured in the expanded storage space.
In further embodiments, configuration information is generated indicating a mapping of logical units to storage blocks in the array and stored in the array. Further, the mapping indicates a range of storage units in the pre-expansion storage space for each logical unit existing in the array prior to the expansion and a range of storage units in the expanded storage space for each logical unit configured in the expanded storage space.
Still further, data is striped to logical units in the pre-expansion storage space across the storage units in the pre-expansion storage space and data is striped to logical units in the expanded storage space to the storage units in the expanded storage space.
The preferred embodiments provide a method, system, and program for expanding the storage capacity of an array without affecting the configuration of logical units and data in the pre-expansion disks in the array. Further, with preferred embodiments, the array can be expanded without having to copy the current data to a backup location before adding and reconfiguring the array, thus reducing the time and operations needed to increase the storage space of an array of disks.